package main

import "fmt"

func main() {
	// go

	m1 := map[string]string{
		"m1": "v1",
	}
	fmt.Printf("%v\n", m1)

	// 2

	m2 := make(map[string]string) //里面不添加元素
	m2["m2"] = "v2"
	fmt.Printf("%v\n", m2)

	// 3
	m3 := map[string]string{}
	fmt.Printf("%v\n", m3)
	//  map 中的key 不是所有类型都支持，该类型 需要支持 == 或者！= 操作

	//var m4 map[[]int]string  // key 不能是slice

	//a := [3]int{1, 2, 3}
	//b := [3]int{1, 2, 3}
	//if a == b {
	//
	//}

	//进行增加，修改
	m5 := map[string]string{
		"a": "va",
		"b": "vb",
		"d": "",
	}
	m5["c"] = "vc"
	m5["b"] = "vb1"

	fmt.Println(m5)

	// 查询
	v1, ok := m5["d"] //反回空的字符串，到底是没有值，还是空
	if ok {
		fmt.Println("找到了", v1)
	} else {
		fmt.Println("没找到")
	}
	fmt.Println(v1, ok) // 没有值

	// 删除
	delete(m5, "a")
	delete(m5, "e") // 不会抛异常
	fmt.Println(m5)

	// 遍历

	for v, k := range m5 {
		fmt.Println(k, v)
	}

	//go语言中也有一个list 就是数据结构中提到的链表
	//指针 //为什么指针在java python等很多语言中不存在
}
